//1.        提示： 将  d:\\day23\\a.txt构造成File对象
//        写一程序：在d:\day23文件下判断如果a.txt是否存在，如果不存在就创建
//        然后将 字符串内容   张三|李四|王五              写入到a.txt中
//
//        写一程序， 读取a.txt中的内容，在控制台上打印效果如下：
//        张三
//        李四
//        王五

import javax.print.attribute.standard.PrinterResolution;
import java.io.*;
import java.util.*;

public class Demo01 {
    public static void main(String[] args) throws IOException {
     //   printInfo();
       // readInfo();

      //  test03();
//        test04();
        //test05();
       // test06();
        test07();

    }

    public static void printInfo()  {
        File file=new File("d:\\day23\\a.txt");
        if (!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace(); //打印具体的异常信息，便于程序员排错
            }
        }

        String str="张三|李四|王五";

        try {
            FileOutputStream fos= null;  //小管 字节流
            fos = new FileOutputStream(file);
            OutputStreamWriter osw=new OutputStreamWriter(fos);//中管 字符流
            BufferedWriter bw=new BufferedWriter(osw);//缓冲字符串

            bw.write(str); //将数据写入到a.txt

            bw.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    public static void readInfo() throws IOException {
        File file=new File("d:\\day23\\a.txt");

        FileInputStream fis=new FileInputStream(file);
        InputStreamReader isr=new InputStreamReader(fis);
        BufferedReader br=new BufferedReader(isr);

        String str;
        while ((str=br.readLine())!=null){
           // System.out.println(str);
            String[] split = str.split("\\|");
            for (String s : split) {
                System.out.println(s);
            }
        }

        br.close();

    }
//
//    有一个文本文档a.txt,内容如下， 在控制台打印出现次数最多的学生姓名
//            1-王五-20
//            2-赵牛-19
//            3-王五-19
//            4-陈琦-21
//            5-赵牛-22
    public static void test03() throws IOException {
        File file=new File("d:\\day23\\a.txt");

        FileInputStream fis=new FileInputStream(file);
        InputStreamReader isr=new InputStreamReader(fis);
        BufferedReader br=new BufferedReader(isr);

        String str;
        Map<String,Integer> map=new HashMap<>();
        while ((str=br.readLine())!=null){
          //  System.out.println(str);
            String[] split = str.split("-");
            String name=split[1];
            //System.out.println(name);
            if (map.containsKey(name)){
                Integer count = map.get(name);
                count++;
                map.put(name,count);

            }else{
                map.put(name,1);
            }
        }

        Collection<Integer> c = map.values();
        Integer max = Collections.max(c);

        map.forEach((String name,Integer count)->{
                if (max ==count){
                    System.out.println(name);
                }
        });


        br.close();
    }

//    2. 准备工作 做假数据， 在d:\\通过鼠标创建一个文件夹day25，右键新建7个各种后缀的文件
//
//    写一程序, 讲day25构造成File对象，调用listFiles（）得到File[], 循环出每个File对象，获取
//    其name,  调用endWith判断是否是.doc文件如果是,调用renameTo，移动到c:\\day25文件夹下
    public static void test04() throws IOException {
            File file=new File("d:\\day25");
            if (file.isDirectory()){ //如果是文件夹才可能有N个文件
                File[] files = file.listFiles();
                System.out.println(files.length);
                for (File f : files) {
                    String fileName = f.getName();
                   // System.out.println(fileName);
                    if (fileName.endsWith(".docx")){
                        //System.out.println(fileName);
                    //    File toFile=new File("d:\\day23\\a.doc"+fileName);
                        f.renameTo(new File("d:\\day23\\"+fileName));
                       // renameTo:等同于window中的剪切
                    }
                }

            }else{
                System.out.println("不是文件夹");
            }

    }

//    1.  从控制台录入数据,一直到录入end时结束, 录入一次数据保存到F盘的记事本a.txt中一次.按照现在学习的会出现覆盖，a.txt中的内容是 “ 人“，请百度解决覆盖的问题
//    比如第一次输入   我是                     a.txt中内容：   我是
//    第二次输入        中国                               a.txt中内容：   我是中国
//    第三次输入        人                              a.txt中内容：     我是中国人

    public static void test05() throws IOException {
        Scanner sn=new Scanner(System.in);
        File file=new File("d:\\day23\\a.txt");
        FileOutputStream fos= new FileOutputStream(file);  //小管 字节流
        OutputStreamWriter osw=new OutputStreamWriter(fos);//中管 字符流
        BufferedWriter bw=new BufferedWriter(osw);//缓冲字符串

        while (true){
            System.out.println("请输入数据：");
            String str = sn.next();
            if (str.equals("end")){ //结束
                break;
            }
            //System.out.println(str);
            bw.write(str+"\n");
        }

      //  bw.flush(); //刷新流 强行写数据
        bw.close();
    }

    public static void test06() throws IOException {
        File file=new File("d:\\day23\\a.txt");
        FileInputStream fis=new FileInputStream(file);
        InputStreamReader isr=new InputStreamReader(fis);
        BufferedReader br=new BufferedReader(isr);

        String str;
        while((str=br.readLine())!=null){
            //System.out.println(str);
            if (str.contains("国")){ //当前str要包含 国，才可能出现1次以上
                for (int i = 0; i <str.length() ; i++) {
                    char ch=str.charAt(i);
                    if (ch=='国'){
                        if (str.indexOf(ch)!=str.lastIndexOf(ch)){
                            System.out.println(str);
                            break;  //打印后说明该str至少有多个国，只打印一次
                        }
                    }
                }
            }
        }


        br.close();
    }
    //    有a.txt如下内容 aaa  bbb ccc aaa  将其中重复的内容去除之后写回到a.txt中   ，
    public static void test07() throws IOException {
        String str = readInfo1();
        if (str==null){
            System.out.println("空文件");
        }else{
            String[] s = str.split(" ");

            Set<String> numberList2=new HashSet<>(Arrays.asList(s));
            System.out.println(numberList2);

            String kkk = String.join(" ", numberList2);

            System.out.println(kkk);

            //弄一套输出流将kkk写入到a.txt中
        }

    }

    public static String readInfo1() throws IOException {
        File file=new File("d:\\day23\\a.txt");

        FileInputStream fis=new FileInputStream(file);
        InputStreamReader isr=new InputStreamReader(fis);
        BufferedReader br=new BufferedReader(isr);

        String str=br.readLine();

        br.close();
        return str;

    }

}
